using System;
using System.Drawing;

namespace ClassBuilderWizard.Interfaces
{
    /// <summary>
    /// Only other interfaces should implement this interface. It provides a base for the IDatabasePlugin and IManualPlugin interfaces.
    /// </summary>
    public interface IPlugin : IDisposable
    {
        /// <summary>
        /// The display name of the plugin
        /// </summary>
        string Name { get; }
        /// <summary>
        /// The full version number of the plugin
        /// </summary>
        string Version { get; }
        /// <summary>
        /// The plugin author's name
        /// </summary>
        string Author { get; }
        /// <summary>
        /// The project types that the plugin supports
        /// </summary>
        ProjectType[] SupportedProjectTypes { get; }
        /// <summary>
        /// The icon to use when displaying the plugin
        /// </summary>
        Bitmap Icon { get; }
        /// <summary>
        /// The plugin's type
        /// </summary>
        PluginType PluginType { get; }
    }
}
